package com.jingogo.service;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService;
import com.jingogo.entity.Order;

public interface OrderService {

    /**
     * 创建订单
     * @param order 订单实体
     * @return 订单ID
     */
    String createOrder(Order order);

    /**
     * 处理支付回调
     * @param orderNo 订单号
     * @param payStatus 支付状态
     * @param payTime 支付时间
     * @param transactionId 交易ID
     */
    void handlePaymentCallback(String orderNo, String payStatus, String payTime, String transactionId);

    /**
     * 超时取消订单
     * @return 取消的订单数量
     */
    int cancelTimeoutOrders();

    /**
     * 根据订单号获取订单详情
     * @param orderNo 订单号
     * @return 订单实体
     */
    Order getOrderByNo(String orderNo);

    /**
     * 分页查询用户订单
     * @param userId 用户ID
     * @param pageNum 页码
     * @param pageSize 每页数量
     * @param status 订单状态
     * @return 订单分页信息
     */
    IPage<Order> getUserOrders(Long userId, Integer pageNum, Integer pageSize, String status);

    /**
     * 更新订单状态
     * @param orderNo 订单号
     * @param status 订单状态
     */
    void updateOrderStatus(String orderNo, String status);

    /**
     * 使用钱包余额支付订单
     * @param orderNo 订单号
     * @param userId 用户ID
     */
    void payWithWallet(String orderNo, Long userId);
}
